In contrast with synchronous circuit designs that rely on a clock signal, asynchronous circuits have the advantage of being more or less insensitive to delay variations resulting for example from variations in the manufacturing process. Furthermore, by avoiding the use of a clock, asynchronous circuits have relatively low power consumption. Asynchronous circuits are generally designed to operate based on events determined using a specific handshake protocol.
The basic circuit element of an asynchronous design is based on a circuit known as a C-element or Muller circuit. This circuit includes a volatile latch for storing a state. Thus if the asynchronous circuit is powered down, the data stored by the various C-elements will be lost.
It would be desirable to provide the C-element with the capability of non-volatile storage, so that the state of the circuit can be restored following power down. However, a problem is that non-volatile data storage operations tend to consume relatively high levels of energy. There is thus a need in the art for a system for data back-up in an asynchronous pipeline that permits energy consumption to be reduced at least some of the time.